package com.tiancheng.trade.authserver.service.impl;

import com.baomidou.mybatisplus.extension.service.IService;
import com.tiancheng.trade.authserver.dto.*;
import com.tiancheng.trade.authserver.entity.AuthApplication;
import com.tiancheng.trade.authserver.entity.AuthOrg;
import com.tiancheng.trade.authserver.model.query.OrgQuery;
import com.tiancheng.trade.authserver.model.reponse.UserOrgInfoResult;
import com.tiancheng.trade.commom.core.data.PageInfo;

import java.util.List;
import java.util.Map;
import java.util.Set;

public interface IAuthOrgService extends IService<AuthOrg> {

    /**
     * 获取下拉选项
     */
    List<OrgOptionDTO> getOptions(OrgQuery param);


    /**
     * 获取分页信息
     */
    PageInfo<OrgListDTO> getTengyunPageInfo(OrgQuery param);

    AuthOrg getByApplicationIdAndCode(String applicationId, String code);

    OrgDetailDTO getDetail(String id);

    /**
     * 根据dto保存
     */
    String saveByDTO(OrgAddUpdateDTO param);

    /**
     * 获取用户机构信息
     */
    List<UserOrgInfoResult> api_getUserOrgInfo(String userId);

    /**
     * oss保存机构
     */
    Map<String, Object> ossSave(Map<String, String> param);

    /**
     * oss获取机构
     */
    List<Map<String, Object>> ossGetList(Map<String, String> param);

    /**
     * oss更新机构
     */
    Map<String, Object> ossUpdate(Map<String, String> param);

    /**
     * oss获取机构详情
     */
    Map<String, Object> ossGetDetail(Map<String, Object> param);

    /**
     * oss删除机构
     */
    void ossDelete(String id);

    /**
     * oss批量添加子机构
     */
    void ossBatchAddSon(Map<String, String> param);

    /**
     * oss获取机构角色分页信息
     */
    PageInfo<Map<String, Object>> ossGetOrgRolePageInfo(Map<String, String> param);

    /**
     * oss获取机构用户分页信息
     */
    PageInfo<Map<String, Object>> ossGetUserRolePageInfo(Map<String, String> param);

    /**
     * oss新增机构角色
     */
    Map<String, Object> ossAddRole(Map<String, String> param);

    /**
     * oss删除机构角色
     */
    void ossDeleteRole(Map<String, Object> param);

    /**
     * oss新增机构成员
     */
    Map<String, Object> ossAddUser(Map<String, String> param);

    /**
     * oss获取机构用户详情
     */
    Map<String, Object> ossGetUserDetail(Map<String, String> param);

    /**
     * oss删除机构下成员
     */
    void ossDeleteUser(Map<String, String> param);

    /**
     * 根据dto更新
     */
    void globalUpdateByDTO(OrgAddUpdateDTO param);

    /**
     * 添加用户到机构下
     */
    void addUsers(OrgAddOrDeleteUserParam param);

    /**
     * 删除机构下的用户
     */
    void deleteUsers(OrgAddOrDeleteUserParam param);

    /**
     * 添加角色到机构下
     */
    void addRoles(OrgAddOrDeleteRoleParam param);

    /**
     * 删除机构下的角色
     */
    void deleteRoles(OrgAddOrDeleteRoleParam param);

    /**
     * 获取用户机构信息
     */
    List<UserOrgInfo> admin_getUserOrgInfo(String userId);

    /**
     * 替换用户角色
     */
    void admin_replaceUserOrg(ReplaceUserOrgParam param);

    /**
     * 根据应用程序Id获取
     */
    Map<String, AuthOrg> getByIds(Set<String> ids);

    /**
     * 更新组织机构数据权限
     */
    void updateDataPermissionCode(AuthApplication application);
}
